package com.scott.excel.read;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
 
public class BigExcelReader3GExport {
	public static String gen3Gcsv(String filepath) throws IOException {
		// String filepath = "C:/luo/doc/Neteq_HN/小区场景/4G-source-demo.xlsx";
		FileWriter writer = null;
		String path = ExportUtil.getEXPORT_PATH() + "3G_" + (new Date()).getTime() + ".csv";
		System.out.println("新生成的文件名: " + path);
		writer = new FileWriter(path);
		final BufferedWriter bw = new BufferedWriter(writer);;
		try {
			// 写入标题
			bw.write("小区标识,LAC,经度,纬度,天线方向角,基站制式,城市,小区,小区名称,位置,小区类型,基站标识,基站类型,基站配置,天线高度,机械下倾角,电子下倾角,BSC/RNC名称,下行频点,扰码,导频功率（db）,邻站信息(RNC.小区标识)");
			
			BigExcelReader reader = new BigExcelReader(filepath) {
				@Override
				protected void outputRow(String[] datas, int[] rowTypes, int rowIndex) {
					if(rowIndex > 0) {
						String line = getLine(datas);
						
						if(line != null) {
							try {
								System.out.println(line);
								bw.write(line);
							} catch (IOException e) {
								e.printStackTrace();
							}
							if(rowIndex % 10000 == 0) {
								try {
									bw.flush();
								} catch (IOException e) {
									e.printStackTrace();
								}
							}
						}
					}
				}
			};
			// 执行解析
			reader.parse();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return path;
	}

	private static Map<String, Integer> IDX_MAPPING = ExportUtil.getIDX_MAPPING();
	private static StringBuffer sb = new StringBuffer();
	public static String getLine(String datas[]) {
		try {
			sb.setLength(0);
			// 此处输出每一行的数据
			
			// 小区标识				A
			setLine(datas[IDX_MAPPING.get("A")].replace("_", ""));
			// LAC					X
			setLine(datas[IDX_MAPPING.get("X")]);
			// 经度					Q
			setLine(datas[IDX_MAPPING.get("Q")]);
			// 纬度					R
			setLine(datas[IDX_MAPPING.get("R")]);
			// 天线方向角			"0"
			setLine("0");
			// 基站制式				"3G"
			setLine("3G");
			// 城市					F
			setLine(datas[IDX_MAPPING.get("F")]);
			// 小区					C
			setLine(datas[IDX_MAPPING.get("C")]);
			// 小区名称				C
			setLine(datas[IDX_MAPPING.get("C")]);
			// 位置					C
			setLine(datas[IDX_MAPPING.get("C")]);
			// 小区类型				"室外"
			setLine("室外");
			// 基站标识				L
			setLine(datas[IDX_MAPPING.get("L")]);
			// 基站类型				"宏站"
			setLine("宏站");
			// 基站配置				"333"
			setLine("333");
			// 天线高度				BP
			setLine(datas[IDX_MAPPING.get("BP")]);
			// 机械下倾角			"0"
			setLine("0");
			// 电子下倾角			"0"
			setLine("0");
			// BSC/RNC名称			""
			setLine("");
			// 下行频点				T
			setLine(datas[IDX_MAPPING.get("T")]);
			// 扰码					U	
			setLine(datas[IDX_MAPPING.get("U")]);
			// 导频功率（db）			V
			setLine(datas[IDX_MAPPING.get("V")]);
			// 邻站信息(RNC.小区标识) ""
			setLine("");
			
			sb.setLength(sb.length() - 1);
			
			sb.append("\n");
			
			return sb.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static void setLine(String val) {
		sb.append(val).append(",");
	}
}
